package p23_类型转换与绑定.高层转换接口的五个实现;

import lombok.ToString;
import org.springframework.beans.MutablePropertyValues;
import org.springframework.validation.DataBinder;

import java.util.Date;

/**
 * 数据绑定，将目标对象与数据源进行绑定，并从数据源中挑选出值赋给目标对象
 * 会根据directFieldAccess选择赋值时，走set、get方法，还是直接访问成员变量
 */
public class _4_DataBinder {

    public static void main(String[] args) {
        //目标对象
        MyBean bean = new MyBean();
        //DataBinder与目标对象(属性被赋值的对象)进行关联绑定
        DataBinder binder = new DataBinder(bean);
        //设置赋值是否根据私有成员变量进行赋值
        binder.initDirectFieldAccess();
        //设置数据来源
        MutablePropertyValues pvs = new MutablePropertyValues();
        pvs.add("a", "222");
        pvs.add("b", 3121);
        pvs.add("c", "1212/12/12");
        //将目标对象与准备的数据进行绑定
        binder.bind(pvs);

        System.out.println(bean);
    }

    @ToString
    static class MyBean {
        private int a;
        private String b;
        private Date c;
    }
}
